classDiagram
    title 交易管理子系统类图 | Trade Management Subsystem Class Diagram
    
    %% 核心实体类 | Core Entity Classes
    class Trade {  %% 交易类
        -id: int  %% 交易ID
        -product_id: int  %% 商品ID
        -seller_id: int  %% 卖家ID
        -buyer_id: int  %% 买家ID
        -price: float  %% 交易价格
        -status: TradeStatus  %% 交易状态
        -shipping_address: string  %% 物流地址
        -payment_method: string  %% 支付方式
        -created_at: datetime  %% 创建时间
        -updated_at: datetime  %% 更新时间
        -completed_at: datetime  %% 完成时间
        
        %% 公有方法 | Public Methods
        +createTrade(product_id: int, seller_id: int, buyer_id: int, price: float): Trade  %% 创建交易
        +updateStatus(status: TradeStatus): Trade  %% 更新交易状态
        +confirmPayment(): Trade  %% 确认支付
        +cancelTrade(): Trade  %% 取消交易
        +getTradeById(id: int): Trade  %% 根据ID获取交易
        +getTradesByUser(user_id: int, role: string): List[Trade]  %% 获取用户的交易列表
        +getTradesByStatus(status: TradeStatus): List[Trade]  %% 获取指定状态的交易
        +getTradesByProduct(product_id: int): List[Trade]  %% 获取商品的交易历史
        
        %% Getter方法 | Getter Methods
        +getId(): int  %% 获取交易ID
        +getProductId(): int  %% 获取商品ID
        +getSellerId(): int  %% 获取卖家ID
        +getBuyerId(): int  %% 获取买家ID
        +getPrice(): float  %% 获取交易价格
        +getStatus(): TradeStatus  %% 获取交易状态
        +getShippingAddress(): string  %% 获取物流地址
        +getPaymentMethod(): string  %% 获取支付方式
        +getCreatedAt(): datetime  %% 获取创建时间
        +getUpdatedAt(): datetime  %% 获取更新时间
        +getCompletedAt(): datetime  %% 获取完成时间
        
        %% Setter方法 | Setter Methods
        +setShippingAddress(shipping_address: string): void  %% 设置物流地址
        +setPaymentMethod(payment_method: string): void  %% 设置支付方式
        +setCompletedAt(completed_at: datetime): void  %% 设置完成时间
        
        %% 私有方法 | Private Methods
        -validateTradeCreation(): boolean  %% 验证交易创建条件
        -updateTimestamps(): void  %% 更新时间戳
    }
    
    class TradeReview {  %% 交易评价类
        -id: int  %% 评价ID
        -trade_id: int  %% 交易ID
        -reviewer_id: int  %% 评价者ID
        -reviewee_id: int  %% 被评价者ID
        -product_quality_rating: int  %% 商品质量评分
        -service_rating: int  %% 服务态度评分
        -shipping_rating: int  %% 物流速度评分
        -overall_rating: float  %% 综合评分
        -comment: string  %% 评价内容
        -is_anonymous: boolean  %% 是否匿名
        -created_at: datetime  %% 创建时间
        
        %% 公有方法 | Public Methods
        +createReview(trade_id: int, reviewer_id: int, reviewee_id: int, ratings: object): TradeReview  %% 创建评价
        +calculateOverallRating(): float  %% 计算综合评分
        +getReviewByTrade(trade_id: int): TradeReview  %% 根据交易获取评价
        +getReviewsByUser(user_id: int): List[TradeReview]  %% 获取用户的评价列表
        +getAverageRatingByUser(user_id: int): float  %% 获取用户的平均评分
        
        %% Getter方法 | Getter Methods
        +getId(): int  %% 获取评价ID
        +getTradeId(): int  %% 获取交易ID
        +getReviewerId(): int  %% 获取评价者ID
        +getRevieweeId(): int  %% 获取被评价者ID
        +getProductQualityRating(): int  %% 获取商品质量评分
        +getServiceRating(): int  %% 获取服务态度评分
        +getShippingRating(): int  %% 获取物流速度评分
        +getOverallRating(): float  %% 获取综合评分
        +getComment(): string  %% 获取评价内容
        +getIsAnonymous(): boolean  %% 获取是否匿名
        +getCreatedAt(): datetime  %% 获取创建时间
        
        %% Setter方法 | Setter Methods
        +setComment(comment: string): void  %% 设置评价内容
        +setIsAnonymous(is_anonymous: boolean): void  %% 设置是否匿名
        
        %% 私有方法 | Private Methods
        -validateRatings(ratings: object): boolean  %% 验证评分有效性
        -calculateWeightedAverage(): float  %% 计算加权平均分
    }
    
    %% 枚举类 | Enumeration Class
    class TradeStatus {  %% 交易状态枚举
        <<enumeration>>
        PENDING  %% 待确认
        CONFIRMED  %% 已确认
        PROCESSING  %% 处理中
        COMPLETED  %% 已完成
        CANCELLED  %% 已取消
        REFUNDED  %% 已退款
    }
    
    class TradeList {  %% 交易列表类
        -trades: List[Trade]  %% 交易列表
        -total_count: int  %% 总交易数
        -page_size: int  %% 每页大小
        -current_page: int  %% 当前页码
        -sort_by: string  %% 排序字段
        -sort_order: string  %% 排序顺序
        
        %% 公有方法 | Public Methods
        +addTrade(trade: Trade): void  %% 添加交易到列表
        +removeTrade(trade_id: int): void  %% 从列表移除交易
        +getTradeById(trade_id: int): Trade  %% 根据ID获取交易
        +getTrades(): List[Trade]  %% 获取当前页交易列表
        +getTotalCount(): int  %% 获取总交易数
        +setPageSize(size: int): void  %% 设置每页大小
        +setCurrentPage(page: int): void  %% 设置当前页码
        +setSorting(field: string, order: string): void  %% 设置排序方式
        +filterByStatus(status: TradeStatus): TradeList  %% 按状态过滤
        +filterByUser(user_id: int, role: string): TradeList  %% 按用户过滤
        +filterByPriceRange(min_price: float, max_price: float): TradeList  %% 按价格范围过滤
        +filterByDateRange(start_date: datetime, end_date: datetime): TradeList  %% 按日期范围过滤
        +search(keyword: string): TradeList  %% 搜索交易
        
        %% Getter方法 | Getter Methods
        +getPageSize(): int  %% 获取每页大小
        +getCurrentPage(): int  %% 获取当前页码
        +getSortBy(): string  %% 获取排序字段
        +getSortOrder(): string  %% 获取排序顺序
    }
    
    %% 关联关系 | Association Relationships
    Trade "1" -- "*" TradeReview : hasReviews  %% 有评价
    Trade "1" -- "1" TradeStatus : hasStatus  %% 有状态
    Trade "1" -- "1" Product : involvesProduct  %% 涉及商品
    Trade "1" -- "1" User : hasSeller  %% 有卖家
    Trade "1" -- "1" User : hasBuyer  %% 有买家
    TradeList "1" -- "*" Trade : manages  %% 管理
    TradeList ..> TradeStatus : uses  %% 使用